import { IPSAppView } from '../../app/view/ipsapp-view';
import { IPSUIActionItem } from '../../app/view/ipsuiaction-item';
import { IPSNavigateParamContainer } from '../ipsnavigate-param-container';
import { IPSDEFormDetail } from './ipsdeform-detail';
import { IPSDEFormItemUpdate } from './ipsdeform-item-update';
import { IPSUIAction } from '../../view/ipsuiaction';

/**
 *
 * 继承父接口类型值[BUTTON]
 * @export
 * @interface IPSDEFormButton
 */
export interface IPSDEFormButton extends IPSDEFormDetail, IPSUIActionItem, IPSNavigateParamContainer {
  /**
   * 按钮行为类型
   * @description 值模式 [实体表单按钮行为类型] {UIACTION：界面行为、 FIUPDATE：表单项更新 }
   * @type {( string | 'UIACTION' | 'FIUPDATE')}
   */
  actionType: string | 'UIACTION' | 'FIUPDATE';

  /**
   * 动态标题绑定值项
   * @type {string}
   */
  captionItemName: string;

  /**
   * 调用表单项更新
   *
   * @type {IPSDEFormItemUpdate}
   */
  getPSDEFormItemUpdate(): IPSDEFormItemUpdate | null;

  /**
   * 调用表单项更新
   *
   * @type {IPSDEFormItemUpdate}
   */
  get psDEFormItemUpdate(): IPSDEFormItemUpdate | null;

  /**
   * 调用表单项更新（必须存在）
   *
   * @type {IPSDEFormItemUpdate}
   */
  getPSDEFormItemUpdateMust(): IPSDEFormItemUpdate;

  /**
   * 调用界面行为
   *
   * @type {IPSUIAction}
   */
  getPSUIAction(): IPSUIAction | null;

  /**
   * 调用界面行为
   *
   * @type {IPSUIAction}
   */
  get psUIAction(): IPSUIAction | null;

  /**
   * 调用界面行为（必须存在）
   *
   * @type {IPSUIAction}
   */
  getPSUIActionMust(): IPSUIAction;

  /**
   * 参数选择视图
   *
   * @type {IPSAppView}
   */
  getParamPickupPSAppView(): IPSAppView | null;

  /**
   * 参数选择视图
   *
   * @type {IPSAppView}
   */
  get paramPickupPSAppView(): IPSAppView | null;

  /**
   * 参数选择视图（必须存在）
   *
   * @type {IPSAppView}
   */
  getParamPickupPSAppViewMust(): IPSAppView;

  /**
   * 参数选择视图参数
   * @type {IModel}
   */
  paramViewParamJO: IModel;

  /**
   * 操作提示信息
   * @type {string}
   */
  tooltip: string;

  /**
   * 界面行为操作目标
   * @description 值模式 [云实体界面行为_操作数据范围] {SINGLEDATA：单项数据、 SINGLEKEY：单项数据（主键）、 MULTIDATA：多项数据、 MULTIKEY：多项数据（主键）、 NONE：无数据 }
   * @type {( string | 'SINGLEDATA' | 'SINGLEKEY' | 'MULTIDATA' | 'MULTIKEY' | 'NONE')}
   */
  uIActionTarget: string | 'SINGLEDATA' | 'SINGLEKEY' | 'MULTIDATA' | 'MULTIKEY' | 'NONE';
}
